
//作者：赵霖、吴佩雄
//先安装适配文件  cnpm install  再安装  cnpm i -S multer
const express = require("express");

const router = express.Router();

const multer = require("multer");           //上传文件需要引用的文件

const path = require("path");               //分析文件后缀名    1.

function rand(min, max) {
    const dec = max - min;
    return parseInt(Math.random() * dec + min);
}

//创建存储对象
const storage = multer.diskStorage({
    destination: path.join(__dirname, "../public/upload"),
    filename: function (req, file, cb) {
        const name = Date.now() + "" + rand(1000000, 10000000) + path.extname(file.originalname);
        cb(null, name);
    }
})


// const storage = multer.diskStorage({
//     // destination:(req,file,cb) =>{           //配置文件存储的目标文件夹1.0
//     //     cb(null,path.join(__dirname,"../public/upload"))
//     // }       
//     destination: path.join(__dirname, "../public/upload"),                //配置文件存储的目标文件夹2.0
//     filename: (req, file, cb) => {              //4.服务器端控制保存文件名        时间戳+随机数+后缀名        Date.now()  时间戳
//         const name = Date.now() + "" + r(1000000, 10000000) + path.extname(file.originalname); //r(最小数,最大数)    path.extname(file.originalname)后缀名
//         cb(null, name)
//     }
// })
const upload = multer({//配置上传处理
    // dest: "./public/upload",
    storage,
    fileFilter: function (req, file, cb) {          //1.限制文件大小
        const ext = path.extname(file.originalname).toLowerCase();//得到文件后缀名  toLowerCase()转换成小写
        const expects = [".jpg", ".png", ".tiff", ".gif", ".bmp", ".jpeg"];//服务器允许的后缀名
        if (expects.includes(ext)) {
            cb(null, true);
        } else {
            cb(new Error("文件类型不行"));
        }
    },
    limits: {        //3.限制文件大小  800KB
        fileSize: 800 * 1024
    }
}).array("imgfile");



// router.post("/", (req, res) => {               // upload.array("duiyingming") 上传文件引用对应的属性名
//     upload(req, res, (err) => {                 //2.服务器响应错误
//         if (err) {                            //只要有错误就发送到客服端
//             //发生错误
//             res.send({
//                 code: 1,                     //表示有错误    code:0 表示没有错误
//                 message: err.message         //得到错误消息
//             })
//         } else {
//             //没有错误
//             res.send({                      //5.客户端的到保存的文件名
//                 code: 0,
//                 message: "",
//                 data: req.files.map(item => "/upload/" + item.filename)
//             });
//         }
//     })
// })
router.post("/", function (req, res) {
    upload(req, res, function (err) {
        if (err) {//发送错误
            res.send({
                code: 1,
                message: err.message
            })
        } else {//正常
            res.send({
                code: 0,
                message: "上传成功",
                data: req.files.map(item => "/upload/" + item.filename)
            });
        }
    })

});


module.exports = router;